package com.doitedu.day06

import scala.collection.immutable

/**
 * @Date: 22.6.26 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 * collect : 只判断处理返回true的数据
 * map :     处理集合中的每个元素
 */
object _01偏函数 {

  val pf = new PartialFunction[Any, Any] {
    override def isDefinedAt(x: Any): Boolean = {
      x.isInstanceOf[Int] || x.isInstanceOf[Double]
    }

    override def apply(e: Any): Any = {
      var res: Any = null
      if (e.isInstanceOf[Double]) {
        res = e.asInstanceOf[Double] * 100
      } else {
        res = e.asInstanceOf[Int] * 100
      }
      res
    }
  }


  def main(args: Array[String]): Unit = {
    val ls = List[Any](1, 2, 3, 4.0, 5.0, "hello", "java", 'a', true)
    val res: Seq[Double] = ls.collect {
      case x: Double => x * 100
      case x: Int => x * 100
    }
    res.foreach(println)

    /*
        val list: Seq[Any] = ls.collect(pf)
        list.foreach(println)
    */


    /**
     * map处理 判断是否处理
     * 处理每个元素  返回   不处理的元素  也有返回   再次进行过滤
     */

    /*
    先过滤要处理的数据 然后map处理
     */
    // 将数字*10
    /*  val data: immutable.Seq[Any] = ls.filter(e => e.isInstanceOf[Int] || e.isInstanceOf[Double])
      val res = data.map(e => {
       if (e.isInstanceOf[Double]){
         e.asInstanceOf[Double]*10
       }else{
         e.asInstanceOf[Int]*10
       }
      })

      res.foreach(println)*/


  }

}
